﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace Clinica_Frba.UserInterface.ABM.Profesional
{
    public partial class AbmProfesionalForm : Form
    {
        private string string_connection;

        public AbmProfesionalForm(string conexion)
        {
            this.string_connection = conexion;
            InitializeComponent();
        }

        private void cerrar_btn_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void AbmProfesionalForm_Load(object sender, EventArgs e)
        {
            // TODO: esta línea de código carga datos en la tabla 'gD2C2013DataSet.Especialidad' Puede moverla o quitarla según sea necesario.
            this.especialidadTableAdapter.Fill(this.gD2C2013DataSet.Especialidad);
            this.especialidad_combobox.SelectedIndex = -1;
            
        }

        private void limpiar_btn_Click(object sender, EventArgs e)
        {
            foreach(Control ctrl in filtros_groupBox.Controls)
            {
                if (ctrl.GetType() == typeof(TextBox) || ctrl.GetType() == typeof(ComboBox))
                    ctrl.Text = "";
            }
        }
        private List<string> obtener_filtros_busqueda()
        {
            List<string> filtros = new List<string>();
            Dictionary<string, string> filters = new Dictionary<string, string>();
            foreach (Control ctrl in filtros_groupBox.Controls)
            {
                if (ctrl.GetType() == typeof(TextBox) || ctrl.GetType() == typeof(ComboBox))
                    if (ctrl.Text != "" && ctrl.Text != null)
                        filters.Add(ctrl.Name, ctrl.Text);
            }
            foreach (KeyValuePair<string, string> kvp in filters)
            {
                switch (kvp.Key)
                {
                    case "apellido_textbox":
                        filtros.Add("pers_apellido LIKE '%" + kvp.Value + "%'");
                        break;
                    case "nombre_textbox":
                        filtros.Add("pers_nombre LIKE '%" + kvp.Value + "%'");
                        break;
                    case "sexo_combobox":
                        if (kvp.Value == "Masculino")
                            filtros.Add("pers_sexo='M'");
                        else
                            filtros.Add("pers_sexo='F'");
                        break;                    
                    case "especialidad_combobox":
                        filtros.Add("espe_descripcion='" + kvp.Value + "'");
                        break;
                    case "dni_textbox":
                        filtros.Add("pers_dni=" + kvp.Value);
                        break;
                    case "username_textbox":
                        filtros.Add("prof_username LIKE '%" + kvp.Value + "%'");
                        break;
                    case "email_textbox":
                        filtros.Add("pers_mail LIKE '%" + kvp.Value + "%'");
                        break;
                    case "matricula_textbox":
                        filtros.Add("prof_matricula=" + kvp.Value);
                        break;
                }
            }
            return filtros;
        }

        private void buscar_btn_Click(object sender, EventArgs e)
        {
            string conString = this.string_connection;
            List<string> filtros = obtener_filtros_busqueda();
            string[] filtrosArray = filtros.ToArray();
            string condicionResultante;
            string query = "SELECT pers_dni as DNI, pers_nombre as Nombre, pers_apellido as Apellido " +
                "FROM [vacuna_gdd].[Persona],[vacuna_gdd].[Profesional]";
            // Si no se especifica la especialidad buscada, no incluyo las tablas para su bùsqueda (que origina multiplicidad de resultados)
            if (especialidad_combobox.Text != "")
                query += ",[vacuna_gdd].[profesional_especialidad],[vacuna_gdd].[Especialidad] "+
                "WHERE pers_dni=prof_dni_persona AND prof_id=ep_prof_id AND ep_especialidad_id=espe_id ";
            else
                query += "WHERE pers_dni=prof_dni_persona ";
            condicionResultante = string.Join(" AND ", filtrosArray);
            if(condicionResultante!="")
                query = query + " AND "+  condicionResultante;
            Console.WriteLine(query);
            SqlDataAdapter data = new SqlDataAdapter(query, conString);
            DataSet set = new DataSet();
            data.Fill(set, "tablaprueba");
            results_dataGridView.DataSource = set.Tables["tablaprueba"];
            
            
            
        }

        private void detalles_btn_Click(object sender, EventArgs e)
        {
            string celda = results_dataGridView.CurrentRow.Cells[0].Value.ToString();
            detalles_profesional dp = new detalles_profesional(celda);
            dp.Show();
        }

        private void alta_profesional_btn_Click(object sender, EventArgs e)
        {
            AltaProfesional ap = new AltaProfesional(this.string_connection);
            ap.Show();
        }

        private void habilitar_detalles(object sender, DataGridViewCellEventArgs e)
        {
            this.detalles_btn.Enabled = true;
        }        
    }
}
